/* ========================= eCAL LICENSE =================================
 *
 * Copyright (C) 2016 - 2025 Continental Corporation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * ========================= eCAL LICENSE =================================
*/

#pragma once

/**
 * @file  clr_monitoring.h
**/

#include "types/clr_monitoring.h"


namespace Eclipse {
  namespace eCAL {
    namespace Core {
      /**
       * @brief eCAL monitoring class.
       **/
      public ref class Monitoring
      {
      public:
        /**
         * @brief Get host, process and topic monitoring as raw message System::Bytes.
         *
         * @param entities Specifies which entities to include (default is All).
         * 
         * @return The monitoring message as a System::Byte array. 
         *         If call was not successful, returns a nullptr.
         **/
        static array<System::Byte>^ GetSerializedMonitoring(MonitoringEntity entities);

        /**
         * @brief Get host, process and topic monitoring as SMonitoring class.
         *
         * @param entities Specifies which entities to include (default is All).
         * 
         * @return The monitoring message as a SMonitoring class. 
         *         Returns nullptr if the call was not successful.
         **/
        static SMonitoring^ GetMonitoring(MonitoringEntity entities);
      };

    } // namespace Core
  } // namespace eCAL
} // namespace Eclipse
